//异常避免
//void func1() throw(A, B, C);	//表示该函数可能会抛出A B C类型的异常
//void func2() noexcept;	//表示该函数不会抛出异常
//noexcept也可以用作运算符，判断表达式是否可能引发异常，如果可能则返回false，反之true

int main()
{
	//分配一大块内存
	double* ptr = nullptr;

	ptr = new (nothrow) double[10000000000];	//nothrow不会抛出异常
	if (ptr == nullptr)
		cout << "分配内存失败。" << endl;		//等同于try{} catch(bad_alloc&){}
												//这个方法更方便
	//其他处理业务的代码
	if (ptr != nullptr)
		delete[]ptr;


	return 0;
}
//一些重点关注的异常
//std::bad_alloc
//std::bad_cast
//std::bad_typeid

